// const wx = require('wx-server-sdk');
// wx.init();

module.exports = {
  /**
   * 向指定数据库表中添加数据
   * @param {string} collectionName - 数据库表名
   * @param {Object} data - 要添加的数据对象
   * @returns {Promise<Object>} - 添加数据的结果对象
   */
  addData: async (collectionName, data) => {
    const db = wx.cloud.database().collection(collectionName);
    try {
      const result = await db.add({ data });
      return result;
    } catch (error) {
      console.error(error);
      throw error;
    }
  },

  /**
   * 向指定数据库表中添加数据数组
   * 
   * @param {string} collectionName - 数据库表名
   * @param {Array<Object>} data - 要添加的数据数组
   * @returns {Promise<Array<Object>>} - 添加数据的结果数组
   */
  addDataArray: async (collectionName, data) => {
    const db = wx.cloud.database().collection(collectionName);
    try {
      const results = await Promise.all(data.map(item => db.add({ data: item })));
      return results;
    } catch (error) {
      console.error(error);
      throw error;
    }
  },

  /**
   * 从指定数据库表中获取数据
   * 
   * @param {string} collectionName - 数据库表名
   * @param {Object} [conditions] - 查询条件
   * @returns {Promise<Array<Object>>} - 获取到的数据数组
   */
  getDataWhere: async (collectionName, conditions = {}) => {
    const db = wx.cloud.database().collection(collectionName);
    try {
      const query = db.where(conditions);
      const result = await query.get();
      return result.data;
    } catch (error) {
      console.error(error);
      throw error;
    }
  },
  /**
   * 从指定数据库表中获取数据
   * 
   * @param {string} collectionName - 数据库表名
   * @returns {Promise<Array<Object>>} - 获取到的数据数组
   */
  getData: async (collectionName) => {
    const db = wx.cloud.database().collection(collectionName);
    try {
      const result = await db.get();
      return result.data;
    } catch (error) {
      console.error(error);
      throw error;
    }
  },

  /**
   * 更新指定数据库表中的数据
   * 
   * @param {string} collectionName - 数据库表名
   * @param {string} id - 要更新的数据的ID
   * @param {Object} data - 要更新的数据对象
   * @returns {Promise<Object>} - 更新数据的结果对象
   */
  updateData: async (collectionName, id, data) => {
    const db = wx.cloud.database().collection(collectionName);
    try {

      const result = await db.doc(id).update({ data });
      console.log("Update result:",result)
      return result;
    } catch (error) {
      console.error(error);
      throw error;
    }
  },

  /**
   * 从指定数据库表中删除数据
   * 
   * @param {string} collectionName - 数据库表名
   * @param {string} id - 要删除的数据的ID
   * @returns {Promise<Object>} - 删除数据的结果对象
   */
  deleteData: async (collectionName, id) => {
    const db = wx.cloud.database().collection(collectionName);
    try {
      const result = await db.doc(id).remove();
      return result;
    } catch (error) {
      console.error(error);
      throw error;
    }
  },

  /**
   * 从指定数据库表中获取带有分页的数据
   * 
   * @param {string} collectionName - 数据库表名
   * @param {number} limit - 每页的数据条数
   * @param {number} offset - 偏移量
   * @param {Object} [conditions] - 查询条件
   * @returns {Promise<Array<Object>>} - 获取到的数据数组
   */
  getDataWithLimitAndOffset: async (collectionName, limit, offset, conditions = {}) => {
    const db = wx.cloud.database().collection(collectionName);
    try {
      const query = db.where(conditions).skip(offset).limit(limit);
      const result = await query.get();
      return result.data;
    } catch (error) {
      console.error(error);
      throw error;
    }
  }
};